SQL Server中如何将Datediff移植到ORACLE

原创|其它|编辑:郝浩|2009-04-28 14:06:43.000|阅读 719 次

概述:本文介绍了如何将SQL Server中Datediff移植到ORACLE的方法。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

SQLServer中,天数的计算如下:

select datediff(day,'2006-05-26 10:11','2006-05-25 11:11')

结果为1天,只判断日期中的天数,是不根据时间来判断的。但是转到ORACLE:

select trunc((to_date('2006-05-26 10:11','YYYY-MM-DD HH:MI') - to_date('2006-05-25 11:11','YYYY-MM-DD HH:MI'))) as datediff from dual

结果为0,只有把前面一个日期改成'2006-05-26 11:11'之后的时间才返回1天。

我要求是只根据天数来求值,看来要统一把比较的日期改到最小单位为天的日期,实际使用中是要把sysdate与结果集中字段计算的,该字段compdate是YYYY-MM-DD HH:MI格式的varchar2类型,难道要我这么写:

select trunc(to_date(to_char(sysdate,'YYYYMMDD'),'YYYYMMDD') - to_date(to_char(to_date(compdate,'YYYY-MM-DD HH:MI'),'YYYYMMDD'),'YYYYMMDD')) from table1

感觉太烦了,有更好的办法吗?

-----------------------------
解决方法:

select trunc(sysdate) - trunc(to_date('2006-05-28 10:20','YYYY-MM-DD HH24:MI')) from dual

select * from 监控温度表 A where 时间 between '" + Str(dtStart.Value) + "'AND '" + Str(dtEnd.Value) + "' And Not Exists (Select 时间 From 监控温度表 Where DateDiff(mi, 时间, A.时间) <= " + Str(text1.text) + ") order by id

try

select * from 监控温度表 A where 时间 between '" + Str(dtStart.Value) + "'AND '" + Str(dtEnd.Value) + "' And Not Exists (Select 时间 From 监控温度表 Where DateDiff(mi, 时间, A.时间) <=5 ) order by id


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP